<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <script src="static/jquery-2.2.3.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
    <script src="http://cpettitt.github.io/project/dagre-d3/latest/dagre-d3.min.js"></script>
    <style>
        /* This sets the color for "TK" nodes to a light blue green. */
        g.type-TK > rect {
            fill: #00ffd0;
        }

        text {
            font-weight: 300;
            font-family: "Helvetica Neue", Helvetica, Arial, sans-serf;
            font-size: 14px;
        }

        .node rect {
            stroke: #999;
            fill: #fff;
            stroke-width: 1.5px;
        }

        .edgePath path {
            stroke: #333;
            stroke-width: 1.5px;
        }
    </style>
    <script>
           $(function(){
               var g = new dagreD3.graphlib.Graph()
                       .setGraph({})
                       .setDefaultEdgeLabel(function() { return {}; });
               // Here we"re setting nodeclass, which is used by our custom drawNodes function
// below.
               g.setNode(0,  { label: "TOP",       class: "type-TOP" });
               g.setNode(1,  { label: "S",         class: "type-S" });
               g.setNode(2,  { label: "NP",        class: "type-NP" });
               g.setNode(3,  { label: "DT",        class: "type-DT" });
               g.setNode(4,  { label: "This",      class: "type-TK" });
               g.setNode(5,  { label: "VP",        class: "type-VP" });
               g.setNode(6,  { label: "VBZ",       class: "type-VBZ" });
               g.setNode(7,  { label: "is",        class: "type-TK" });
               g.setNode(8,  { label: "NP",        class: "type-NP" });
               g.setNode(9,  { label: "DT",        class: "type-DT" });
               g.setNode(10, { label: "an",        class: "type-TK" });
               g.setNode(11, { label: "NN",        class: "type-NN" });
               g.setNode(12, { label: "example",   class: "type-TK" });
               g.setNode(13, { label: ".",         class: "type-." });
               g.setNode(14, { label: "sentence",  class: "type-TK" });

               g.nodes().forEach(function(v) {
                   var node = g.node(v);
                   // Round the corners of the nodes
                   node.rx = node.ry = 5;
               });

// Set up edges, no special attributes.
               g.setEdge(3, 4);
               g.setEdge(2, 3);
               g.setEdge(1, 2);
               g.setEdge(6, 7);
               g.setEdge(5, 6);
               g.setEdge(9, 10);
               g.setEdge(8, 9);
               g.setEdge(11,12);
               g.setEdge(8, 11);
               g.setEdge(5, 8);
               g.setEdge(1, 5);
               g.setEdge(13,14);
               g.setEdge(1, 13);
               g.setEdge(0, 1)

// Create the renderer
               var render = new dagreD3.render();
;
// Set up an SVG group so that we can translate the final graph.
               var svg = d3.select("#jobGraphSvg"),
                       svgGroup = svg.append("g");

// Run the renderer. This is what draws the final graph.
               render(d3.select("#jobGraphSvg g"), g);
               // Center the graph
//               var xCenterOffset = (svg.attr("width") - g.graph().width) / 2;
//               svgGroup.attr("transform", "translate(" + xCenterOffset + ", 20)");
//               svg.attr("height", g.graph().height + 40);
// Center the graph
//            var xCenterOffset = (width - g.graph().width) / 2;
//            svgGroup.attr("transform", "translate(" + xCenterOffset + ", 20)");
//            svg.attr("height", g.graph().height + 40);
           });
    </script>
</head>
<body>
<div>
    <svg id="jobGraphSvg" width=960 height=600 viewpoint="0 0 1000 1000"></svg>
</div>
</body>